- nodejs_version: 16
- nodejs_version: 14
- nodejs_version: 12
- - nodejs_version: 10
# Build plain C++
- nodejs_version: none
strategy:
matrix:
- node-version: [10.x, 12.x, 14.x, 16.x]
+ node-version: [12.x, 14.x, 16.x]
steps:
- uses: actions/checkout@v2
runs-on: ubuntu-latest
strategy:
matrix:
- python-version: [3.5, 3.6, 3.7, 3.8, 3.9]
+ python-version: [3.7, 3.8, 3.9, '3.10']
steps:
- uses: actions/checkout@v2
docker run --rm -v "${PWD}:/opt/OpenCC" \
-e TWINE_USERNAME=__token__ \
-e TWINE_PASSWORD=${{ secrets.PYPI_TOKEN }} \
- ubuntu:16.04 /bin/bash /opt/OpenCC/release-pypi-linux.sh
+ ubuntu:18.04 /bin/bash /opt/OpenCC/release-pypi-linux.sh
- name: Build package and upload (macOS)
if: runner.os == 'macOS'
- 16
- 14
- 12
- - 10
os:
- linux
set (PACKAGE_BUGREPORT https://github.com/BYVoid/Opencc/issues)
set (OPENCC_VERSION_MAJOR 1)
set (OPENCC_VERSION_MINOR 1)
-set (OPENCC_VERSION_REVISION 3)
+set (OPENCC_VERSION_REVISION 4)
if (CMAKE_BUILD_TYPE MATCHES Debug)
set (version_suffix .Debug)
# Change History of OpenCC
+## Version 1.1.4
+
+2022年6月4日
+
+* 支持Python 3.10([#637](https://github.com/BYVoid/OpenCC/issues/637)。
+* 移除针对Python 2.7、3.5、3.6和Node 10的构建([#690](https://github.com/BYVoid/OpenCC/issues/690), [#691](https://github.com/BYVoid/OpenCC/issues/691))。
+* 若干其他小修復。
+
## Version 1.1.3
2021年9月3日
### Others (Unofficial)
* Swift (iOS): [SwiftyOpenCC](https://github.com/XQS6LB3A/SwiftyOpenCC)
+* iOSOpenCC (pod): [iOSOpenCC](https://github.com/swiftdo/OpenCC)
* Java: [opencc4j](https://github.com/houbb/opencc4j)
* Android: [android-opencc](https://github.com/qichuan/android-opencc)
* PHP: [opencc4php](https://github.com/nauxliu/opencc4php)
* Pure JavaScript: [opencc-js](https://github.com/nk2028/opencc-js)
* WebAssembly: [wasm-opencc](https://github.com/oyyd/wasm-opencc)
* Browser Extension: [opencc-extension](https://github.com/tnychn/opencc-extension)
+* Go (Pure): [OpenCC for Go](https://github.com/longbridgeapp/opencc)
### Configurations 配置文件
* [Cychih](https://github.com/pi314)
* [kyleskimo](https://github.com/kyleskimo)
* [Ryuan Choi](https://github.com/bunhere)
+* [Prcuvu](https://github.com/Prcuvu)
* [Tony Able](https://github.com/TonyAble)
* [Xiao Liang](https://github.com/yxliang01)
-Please update this list you have contributed OpenCC.
+Please feel free to update this list if you have contributed OpenCC.
淨 浄
淺 浅
渴 渇
-æº\8c æ½\91
+æ½\91 æº\8c
溪 渓
溫 温
溼 湿
穗 穂
穩 穏
穰 穣
-ç«\83 ç«\88
+ç«\88 ç«\83
竊 窃
粹 粋
糉 粽
縣 県
縱 縦
總 総
-ç¹\8b 繫
+繫 ç¹\8b
繡 繍
繩 縄
繪 絵
鄉 郷
酢 醋
醉 酔
-é\86\97 é\86±
+é\86± é\86\97
醫 医
醬 醤
釀 醸
坚 堅
坛 壇 罈
坜 壢
-坝 壩
+坝 壩 垻
坞 塢
坟 墳
坠 墜
汉 漢
汤 湯
汹 洶
+沄 澐
沈 沈 瀋
沟 溝
没 沒
𫢸 僤
𫧃 𣍐
𫧮 𪋿
+𫫇 噁
𫬐 㘔
+𫭟 塸
+𫭢 埨
+𫭼 𡑍
𫮃 墠
𫰛 娙
+𫵷 㠣
𫶇 嵽
𫷷 廞
𫸩 彄
𬀩 暐
+𬀪 晛
+𬂩 梜
+𬃊 櫍
+𬇕 澫
+𬇙 浿
+𬇹 漍
+𬉼 熰
+𬊈 燖
+𬊤 燀
+𬍛 瓅
+𬍡 璗
+𬍤 璕
+𬒈 礐
+𬒗 𥗽
+𬕂 篢
+𬘓 紃
+𬘘 紞
+𬘡 絪
+𬘩 綎
+𬘫 綄
+𬘬 綪
+𬘭 綝
+𬘯 綧
+𬙂 縯
+𬙊 纆
+𬙋 纕
+𬜬 蔄
+𬜯 䓣
+𬞟 蘋
+𬟁 虉
+𬟽 蝀
+𬣙 訏
+𬣞 詝
+𬣡 諓
+𬣳 詪
+𬤇 諲
+𬤊 諟
+𬤝 譓
+𬨂 軝
+𬨎 輶
+𬩽 鄩
+𬪩 醲
+𬬩 釴
𬬭 錀
+𬬮 鋹
+𬬱 釿
+𬬸 鉥
+𬬹 鉮
𬬻 鑪
+𬬿 鉊
+𬭁 鉧
𬭊 𨧀
+𬭎 鋐
+𬭚 錞
𬭛 𨨏
+𬭤 鍭
+𬭩 鎓
+𬭬 鏏
𬭭 鏚
+𬭯 䥕
𬭳 𨭎
𬭶 𨭆
+𬭸 鏻
+𬭼 鐩
+𬮱 闉
+𬮿 隑
+𬯀 隮
+𬯎 隤
+𬱖 頔
+𬱟 頠
+𬳵 駓
+𬳶 駉
+𬳽 駪
+𬳿 駼
+𬴂 騑
+𬴃 騞
+𬴊 驎
𬶋 鮈
𬶍 鮀
𬶏 鮠
+𬶐 鮡
𬶟 鯻
+𬶠 鰊
+𬶨 鱀
+𬶭 鰶
+𬶮 鱚
+𬷕 鵏
+𬸘 鶠
+𬸚 鸑
+𬸣 鶱
+𬸦 鷟
𬸪 鷭
𬸯 鷿
+𬹼 齘
+𬺈 齮
+𬺓 齼
𰬸 繐
𰰨 菕
𰶎 譅
七余 七餘
七八下里 七八下裏
七出 七出
+七出戏 七齣戲
七出祁山 七出祁山
七分钟 七分鐘
七划 七劃
三冬 三冬
三冬两夏 三冬兩夏
三准 三準
+三出戏 三齣戲
三出祁山 三出祁山
三分钟 三分鐘
三只 三隻
不可胜言 不可勝言
不可胜计 不可勝計
不可胜记 不可勝記
-ä¸\8då\90\83ç\83\9fç\81«é£\9f ä¸\8då\90\83煙火食
+ä¸\8då\90\83ç\83\9fç\81«é£\9f ä¸\8då\96«煙火食
不合 不合
不合体统 不合體統
不合作 不合作
不差毫发 不差毫髮
不干 不幹 不乾
不干不净 不乾不淨
-ä¸\8då¹²ä¸\8dæ·¨å\90\83äº\86没ç\97\85 ä¸\8dä¹¾ä¸\8dæ·¨å\90\83了沒病
+ä¸\8då¹²ä¸\8dæ·¨å\90\83äº\86没ç\97\85 ä¸\8dä¹¾ä¸\8dæ·¨å\96«了沒病
不干了 不幹了
不干事 不幹事
不干他 不干他
乌滋别克 烏滋別克
乌滋别克斯坦 烏滋別克斯坦
乌烟瘴气 烏煙瘴氣
-ä¹\8cç\8b\97å\90\83é£\9fç\99½ç\8b\97å½\93ç\81¾ ç\83\8fç\8b\97å\90\83食白狗當災
+ä¹\8cç\8b\97å\90\83é£\9fç\99½ç\8b\97å½\93ç\81¾ ç\83\8fç\8b\97å\96«食白狗當災
乌苏 烏蘇
乌苏市 烏蘇市
乌苏拉 烏蘇拉
九亿五千万 九億五千萬
九余 九餘
九冬 九冬
+九出戏 九齣戲
九出祁山 九出祁山
九分钟 九分鐘
九划 九劃
似松实紧 似鬆實緊
佃租制度 佃租制度
但云 但云
-ä½\86å¾\97ä¸\80ç\89\87æ©\98ç\9a®å\90\83ä¸\94è\8e«å¿\98äº\86æ´\9eåºæ¹\96 ä½\86å¾\97ä¸\80ç\89\87æ©\98ç\9a®å\90\83且莫忘了洞庭湖
+ä½\86å¾\97ä¸\80ç\89\87æ©\98ç\9a®å\90\83ä¸\94è\8e«å¿\98äº\86æ´\9eåºæ¹\96 ä½\86å¾\97ä¸\80ç\89\87æ©\98ç\9a®å\96«且莫忘了洞庭湖
但愿 但願
但愿如此 但願如此
但曲 但曲
侵蚀基准 侵蝕基準
便了 便了
便于 便於
-便å\90\83å¹² 便å\90\83乾
+便å\90\83å¹² 便å\96«乾
便宜不过当家 便宜不過當家
便当 便當
便当店 便當店
党外 黨外
党外人士 黨外人士
党太尉 党太尉
-å\85\9a太å°\89å\90\83å\8c¾é£\9f å\85\9a太å°\89å\90\83匾食
+å\85\9a太å°\89å\90\83å\8c¾é£\9f å\85\9a太å°\89å\96«匾食
党委 黨委
党委书记 黨委書記
党委会 黨委會
全面禁止核试验条约 全面禁止核試驗條約
全面规划 全面規劃
全面进行 全面進行
+兩出戏 兩齣戲
八万 八萬
八万一千 八萬一千
八万四千法门 八萬四千法門
八余 八餘
八克 八克
八军团 八軍團
+八出戏 八齣戲
八出祁山 八出祁山
八十天环游地球 八十天環遊地球
八十种好 八十種好
六余 六餘
六冲 六沖
六出奇计 六出奇計
+六出戏 六齣戲
六出祁山 六出祁山
六厂 六廠
六发 六發
出宰 出宰
出家 出家
出家人 出家人
-å\87ºå®¶äººå\90\83å\85«æ\96¹ å\87ºå®¶äººå\90\83八方
+å\87ºå®¶äººå\90\83å\85«æ\96¹ å\87ºå®¶äººå\96«八方
出将入相 出將入相
出小恭 出小恭
出尔反尔 出爾反爾
出恭 出恭
出息 出息
出意外 出意外
-出戏 齣戲
+出戏 出戏 齣戲
出战 出戰
出户 出戶
出手 出手
切当 切當
切菜板 切菜板
切除术 切除術
-切面 切面
+切面 切面 切麵
切骨之仇 切骨之仇
刊了 刊了
刊出 刊出
口出恶言 口出惡言
口出秽言 口出穢言
口占 口占
+口吃 口吃
口布 口布
口干 口乾
口干舌燥 口乾舌燥
只可在 只可在
只可意会不可言传 只可意會不可言傳
只叹 只嘆
-å\8fªå\90\83 å\8fªå\90\83
+å\8fªå\90\83 å\8fªå\96«
只合 只合
只含 只含
只听 只聽
吁气 吁氣
吁求 籲求
吁请 籲請
-吃一顿挨一顿 吃一頓挨一頓
-吃不了 吃不了
-吃不出 吃不出
-吃不出来 吃不出來
-吃了 吃了
-吃了定心丸 吃了定心丸
-吃了秤砣 吃了秤砣
-吃了蜜蜂儿屎似的 吃了蜜蜂兒屎似的
-吃了饭 吃了飯
-吃亏上当 吃虧上當
-吃亏就是占便宜 吃虧就是佔便宜
-吃人一个蛋恩情无法断 吃人一個蛋恩情無法斷
-吃人虫 吃人蟲
-吃伤了 吃傷了
-吃几碗干饭 吃幾碗乾飯
-吃出 吃出
-吃合家欢 吃合家歡
-吃后悔药 吃後悔藥
-吃回头草 吃回頭草
-吃地面 吃地面
-吃姜 吃薑
-吃完面 吃完麪
-吃尽 吃盡
-吃尽当光 吃盡當光
-吃干了 吃乾了
-吃干醋 吃乾醋
-吃得了 吃得了
-吃得出 吃得出
-吃得出来 吃得出來
-吃挂络儿 吃掛絡兒
-吃敲才 吃敲才
-吃板刀面 吃板刀麪
-吃枪药 吃槍藥
-吃烟 吃煙
-吃药 吃藥
-吃药前 吃藥前
-吃药后 吃藥後
-吃药时 吃藥時
-吃豆干 吃豆乾
-吃辣面 吃辣麪
-吃过面 吃過麪
-吃里扒外 吃裏扒外
-吃里爬外 吃裏爬外
-吃钉板 吃釘板
-吃错药 吃錯藥
-吃闲话 吃閒話
-吃闲饭 吃閒飯
-吃面 吃麪
-吃饭傢伙 吃飯傢伙
-吃饭别忘了种谷人 吃飯別忘了種穀人
-吃饭家伙 吃飯家伙
-吃饱了饭撑的 吃飽了飯撐的
-吃饱没事干 吃飽沒事幹
+吃一顿挨一顿 喫一頓挨一頓
+吃不了 喫不了
+吃不出 喫不出
+吃不出来 喫不出來
+吃了 喫了
+吃了定心丸 喫了定心丸
+吃了秤砣 喫了秤砣
+吃了蜜蜂儿屎似的 喫了蜜蜂兒屎似的
+吃了饭 喫了飯
+吃亏上当 喫虧上當
+吃亏就是占便宜 喫虧就是佔便宜
+吃亏的是乖占便宜的是呆 喫虧的是乖占便宜的是呆
+吃人一个蛋恩情无法断 喫人一個蛋恩情無法斷
+吃人虫 喫人蟲
+吃伤了 喫傷了
+吃几碗干饭 喫幾碗乾飯
+吃出 喫出
+吃合家欢 喫合家歡
+吃后悔药 喫後悔藥
+吃回头草 喫回頭草
+吃地面 喫地面
+吃姜 喫薑
+吃完面 喫完麪
+吃尽 喫盡
+吃尽当光 喫盡當光
+吃干了 喫乾了
+吃干醋 喫乾醋
+吃得了 喫得了
+吃得出 喫得出
+吃得出来 喫得出來
+吃挂络儿 喫掛絡兒
+吃敲才 喫敲才
+吃板刀面 喫板刀麪
+吃枪药 喫槍藥
+吃烟 喫煙
+吃药 喫藥
+吃药前 喫藥前
+吃药后 喫藥後
+吃药时 喫藥時
+吃豆干 喫豆乾
+吃辣面 喫辣麪
+吃过面 喫過麪
+吃里扒外 喫裏扒外
+吃里爬外 喫裏爬外
+吃钉板 喫釘板
+吃错药 喫錯藥
+吃闲话 喫閒話
+吃闲饭 喫閒飯
+吃面 喫麪
+吃饭傢伙 喫飯傢伙
+吃饭别忘了种谷人 喫飯別忘了種穀人
+吃饭家伙 喫飯家伙
+吃饱了饭撑的 喫飽了飯撐的
+吃饱没事干 喫飽沒事幹
各不相同 各不相同
各个 各個
各个击破 各個擊破
合口味 合口味
合口呼 合口呼
合叶 合葉
-å\90\88å\90\83 å\90\88å\90\83
-å\90\88å\90\83æ\97\8f å\90\88å\90\83族
+å\90\88å\90\83 å\90\88å\96«
+å\90\88å\90\83æ\97\8f å\90\88å\96«族
合合 合合
合同 合同
合同各方 合同各方
同参 同參
同右 同右
同号 同號
-å\90\8cå\90\83 å\90\8cå\90\83
-å\90\8cå\90\83å\90\8cä½\8f å\90\8cå\90\83同住
+å\90\8cå\90\83 å\90\8cå\96«
+å\90\8cå\90\83å\90\8cä½\8f å\90\8cå\96«同住
同名 同名
同名之累 同名之累
同名同姓 同名同姓
喧哄 喧鬨
喧哗 喧譁
喧噪 喧噪
-喫亏的是乖占便宜的是呆 喫虧的是乖占便宜的是呆
喷云吐雾 噴雲吐霧
喷云嗳雾 噴雲噯霧
喷出 噴出
复习考 複習考
复书 復書
复交 復交
-复亩珍 複畝珍
复仇 復仇
复仇者 復仇者
复仇记 復仇記
多发病 多發病
多只 多隻
多台 多臺
-å¤\9aå\90\83å¤\9aå\8d å¤\9aå\90\83多佔
+å¤\9aå\90\83å¤\9aå\8d å¤\9aå\96«多佔
多向 多向
多哈回合 多哈回合
多回 多回
大获 大獲
大获全胜 大獲全勝
大虫 大蟲
-大è\99«ä¸\8då\90\83ä¼\8fè\82\89 大è\9f²ä¸\8då\90\83伏肉
+大è\99«ä¸\8då\90\83ä¼\8fè\82\89 大è\9f²ä¸\8då\96«伏肉
大虫口里倒涎 大蟲口裏倒涎
-大è\99«å\90\83å°\8fè\99« 大è\9f²å\90\83小蟲
+大è\99«å\90\83å°\8fè\99« 大è\9f²å\96«小蟲
大虫头上做窠 大蟲頭上做窠
大蜡 大蜡
大衍历 大衍曆
就出 就出
就出去 就出去
就出来 就出來
-å°±å\90\83å¹² å°±å\90\83乾
+å°±å\90\83å¹² å°±å\96«乾
就回 就回
就回去 就回去
就回来 就回來
布气 布氣
布水 布水
布法罗 布法羅
-布洒器 布灑器
布洛克 布洛克
布洛斯顿 布洛斯頓
布洛沙德 布洛沙德
布瑞斯特 布瑞斯特
布瑞特 布瑞特
布瑞顿 布瑞頓
-布用填 布用填
布疋 布疋
布疑阵 佈疑陣
布痕瓦尔德 布痕瓦爾德
平复帖 平復帖
平复起来 平復起來
平头并进 平頭並進
-平安里 平安裏
+平安里 平安里
平定准噶尔回部得胜图 平定準噶爾回部得勝圖
平平当当 平平當當
平康里 平康里
弄盏传杯 弄盞傳杯
弄粉调朱 弄粉調朱
弄脏 弄髒
-å¼\84é\9d¢å\90\83 å¼\84麪å\90\83
+å¼\84é\9d¢å\90\83 å¼\84麪å\96«
弄鬼吊猴 弄鬼弔猴
弈秋 弈秋
弊帚千金 弊帚千金
快出来 快出來
快升 快升
快去快回 快去快回
-å¿«å\90\83å¹² å¿«å\90\83乾
+å¿«å\90\83å¹² å¿«å\96«乾
快向 快向
快回 快回
快回到 快回到
手铲 手鏟
手链 手鍊 手鏈
手面 手面
-æ\89\8bé\9d¢èµ\9aå\90\83 æ\89\8bé\9d¢è³ºå\90\83
+æ\89\8bé\9d¢èµ\9aå\90\83 æ\89\8bé\9d¢è³ºå\96«
才上到 纔上到
才上去 纔上去
才上来 纔上來
早知今日悔不当初 早知今日悔不當初
早秋 早秋
早自修 早自修
-æ\97©èµ·ç\9a\84é¸\9få\84¿æ\9c\89è\99«å\90\83 æ\97©èµ·ç\9a\84é³¥å\85\92æ\9c\89è\9f²å\90\83
+æ\97©èµ·ç\9a\84é¸\9få\84¿æ\9c\89è\99«å\90\83 æ\97©èµ·ç\9a\84é³¥å\85\92æ\9c\89è\9f²å\96«
旭日东升 旭日東昇
旭日初升 旭日初昇
旱干 旱乾
暗号 暗號
暗号灯 暗號燈
暗叹 暗歎
-æ\9a\97å\90\83ä¸\80æ\83\8a æ\9a\97å\90\83一驚
+æ\9a\97å\90\83ä¸\80æ\83\8a æ\9a\97å\96«一驚
暗合 暗合
暗含 暗含
暗喜 暗喜
武器系统 武器系統
武器级别材料 武器級別材料
武坛 武壇
-æ¦å¤§é\83\8eå\90\83æ¯\92è\8d¯ æ¦å¤§é\83\8eå\90\83毒藥
+æ¦å¤§é\83\8eå\90\83æ¯\92è\8d¯ æ¦å¤§é\83\8eå\96«毒藥
武当 武當
武当山 武當山
武当派 武當派
猝发 猝發
猢狲入布袋 猢猻入布袋
猥当大任 猥當大任
-ç\8cªå\85«æ\88\92å\90\83人å\8f\82æ\9e\9c 豬å\85«æ\88\92å\90\83人參果
+ç\8cªå\85«æ\88\92å\90\83人å\8f\82æ\9e\9c 豬å\85«æ\88\92å\96«人參果
猪只 豬隻
猪肉干 豬肉乾
猪肝面 豬肝麪
相须为命 相須爲命
相须而行 相須而行
盼了 盼了
-盼既示复 盼既示覆
盾板 盾板
省个 省個
省了 省了
稔恶不悛 稔惡不悛
稠云 稠雲
稳占 穩佔
-稳å\90\83ä¸\89注 ç©©å\90\83三注
+稳å\90\83ä¸\89注 ç©©å\96«三注
稳坐钓鱼台 穩坐釣魚臺
稳定物价 穩定物價
稳当 穩當
算出去 算出去
算出来 算出來
算历 算曆
-算发 算髮
算得了 算得了
算术 算術
算术和 算術和
肿瘤切除术 腫瘤切除術
胁制 脅制
胃出血 胃出血
+胃口 胃口
胃脏 胃臟
胃药 胃藥
胃药片 胃藥片
胡厮哄 胡廝哄
胡厮混 胡廝混
胡厮缠 胡廝纏
-è\83¡å\90\83æµ·å\96\9d è\83¡å\90\83海喝
-è\83¡å\90\83é\97·ç\9d¡ è\83¡å\90\83悶睡
+è\83¡å\90\83æµ·å\96\9d è\83¡å\96«海喝
+è\83¡å\90\83é\97·ç\9d¡ è\83¡å\96«悶睡
胡同 衚衕
胡吣 胡唚
胡吹 胡吹
虫儿 蟲兒
虫出 蟲出
虫卵 蟲卵
-è\99«å\90\83ç\89\99 è\9f²å\90\83牙
+è\99«å\90\83ç\89\99 è\9f²å\96«牙
虫声 蟲聲
虫媒病毒 蟲媒病毒
虫媒花 蟲媒花
角膜移植术 角膜移植術
角色冲突 角色衝突
角色扮演游戏 角色扮演遊戲
-角落发 角落發
+角落 角落
角落里 角落裏
角谷猜想 角谷猜想
角里 角里
邢台市 邢臺市
那个 那個
那个人 那個人
-é\82£ä¸ªç\8c«å\84¿ä¸\8då\90\83è\85¥ é\82£å\80\8bè²\93å\85\92ä¸\8då\90\83腥
+é\82£ä¸ªç\8c«å\84¿ä¸\8då\90\83è\85¥ é\82£å\80\8bè²\93å\85\92ä¸\8då\96«腥
那个耗子不偷油 那個耗子不偷油
那么 那麼
那么干 那麼幹
部发 部發
部曲 部曲
部胡林 部胡林
-部落发 部落發
+部落 部落
部落同盟 部落同盟
郭勇志 郭勇志
郭台成 郭臺成
㞞 𪨊
㟺 𪩇
㠏 㟆
+㠣 𫵷
㢗 𪪑
㢝 𢋈
㥮 㤘
䍽 𦍠
䎙 𫅭
䎱 䎬
+䓣 𬜯
䕤 𫟕
䕳 𦰴
䖅 𫟑
䥄 𫠀
䥇 䦂
䥑 鿏
+䥕 𬭯
䥗 𫔋
䥩 𨱖
䥯 𫔆
僑 侨
僕 仆
僞 伪
+僤 𫢸
僥 侥
僨 偾
僱 雇
刪 删
剄 刭
則 则
-剋 克
+剋 克 剋
剎 刹
剗 刬
剛 刚
嘸 呒
嘺 𪡀
嘽 啴
-噁 恶
+噁 恶 𫫇
噅 𠯠
噓 嘘
噚 㖊
圖 图
團 团
圞 𪢮
+垻 坝
埡 垭
+埨 𫭢
埬 𪣆
埰 采
執 执
塢 坞
塤 埙
塵 尘
+塸 𫭟
塹 堑
塿 𪣻
墊 垫
墜 坠
+墠 𫮃
墮 堕
墰 坛
墲 𪢸
妝 妆
姍 姗
姦 奸
+娙 𫰛
娛 娱
婁 娄
婡 𫝫
嵐 岚
嵗 岁
嵼 𡶴
+嵽 𫶇
嵾 㟥
嶁 嵝
嶄 崭
廕 荫
廚 厨
廝 厮
+廞 𫷷
廟 庙
廠 厂
廡 庑
張 张
強 强
彃 𪪼
+彄 𫸩
彆 别
彈 弹
彌 弥
昇 升
時 时
晉 晋
+晛 𬀪
晝 昼
暈 晕
暉 晖
+暐 𬀩
暘 旸
暢 畅
暫 暂
梔 栀
梖 𪱷
梘 枧
+梜 𬂩
條 条
梟 枭
梲 棁
檻 槛
櫃 柜
櫅 𪲎
+櫍 𬃊
櫓 橹
櫚 榈
櫛 栉
洩 泄
洶 汹
浹 浃
+浿 𬇙
涇 泾
涗 涚
涼 凉
滿 满
漁 渔
漊 溇
+漍 𬇹
漚 沤
漢 汉
漣 涟
澤 泽
澦 滪
澩 泶
+澫 𬇕
澬 𫞚
澮 浍
澱 淀
熗 炝
熚 𤇹
熡 𤋏
+熰 𬉼
熱 热
熲 颎
熾 炽
+燀 𬊤
燁 烨
燈 灯
燉 炖
燒 烧
+燖 𬊈
燙 烫
燜 焖
營 营
瑽 𪻐
璉 琏
璊 𫞩
+璕 𬍤
+璗 𬍡
璝 𪻺
璡 琎
璣 玑
璾 𫞦
璿 璇
瓄 𪻨
+瓅 𬍛
瓊 琼
瓏 珑
瓔 璎
礄 硚
礆 硷
礎 础
+礐 𬒈
礒 𥐟
礙 碍
礦 矿
篔 筼
篘 𥬠
篠 筿
+篢 𬕂
篤 笃
篩 筛
篳 筚
糾 纠
紀 纪
紂 纣
+紃 𬘓
約 约
紅 红
紆 纡
紛 纷
紜 纭
紝 纴
+紞 𬘘
紟 𫄛
紡 纺
紬 䌷
給 给
絧 𫄡
絨 绒
+絪 𬘡
絰 绖
統 统
絲 丝
綀 𦈌
綁 绑
綃 绡
+綄 𬘫
綆 绠
綇 𦈋
綈 绨
綉 绣
綋 𫟄
綌 绤
+綎 𬘩
綏 绥
綐 䌼
綑 捆
經 经
綖 𫄧
綜 综
+綝 𬘭
綞 缍
綟 𫄫
綠 绿
綡 𫟅
綢 绸
綣 绻
+綧 𬘯
+綪 𬘬
綫 线
綬 绶
維 维
縬 𦈚
縭 缡
縮 缩
+縯 𬙂
縰 𫄳
縱 纵
縲 缧
繾 缱
繿 䍀
纁 𫄸
+纆 𬙊
纇 颣
纈 缬
纊 纩
纏 缠
纓 缨
纔 才
+纕 𬙋
纖 纤
纗 𫄹
纘 缵
蓯 苁
蓴 莼
蓽 荜
+蔄 𬜬
蔔 卜
蔘 参
蔞 蒌
蘆 芦
蘇 苏
蘊 蕴
-蘋 苹 蘋
+蘋 苹 𬞟
蘚 藓
蘞 蔹
蘟 𦻕
蘺 蓠
蘿 萝
虆 蔂
+虉 𬟁
處 处
虛 虚
虜 虏
蛺 蛱
蛻 蜕
蜆 蚬
+蝀 𬟽
蝕 蚀
蝟 猬
蝦 虾
訊 讯
訌 讧
討 讨
+訏 𬣙
訐 讦
訑 𫍙
訒 讱
詗 诇
詘 诎
詛 诅
+詝 𬣞
詞 词
詠 咏
詡 诩
詣 诣
試 试
詩 诗
+詪 𬣳
詫 诧
詬 诟
詭 诡
諏 诹
諑 诼
諒 谅
+諓 𬣡
論 论
諗 谂
諛 谀
諜 谍
諝 谞
諞 谝
+諟 𬤊
諡 谥
諢 诨
諣 𫍩
諯 𫍱
諰 𫍰
諱 讳
+諲 𬤇
諳 谙
諴 𫍯
諶 谌
譎 谲
譏 讥
譑 𫍤
+譓 𬤝
譖 谮
識 识
譙 谯
軗 𨐅
軛 轭
軜 𫐇
+軝 𬨂
軟 软
軤 轷
軨 𫐉
輮 𫐓
輯 辑
輳 辏
+輶 𬨎
輷 𫐒
輸 输
輻 辐
鄖 郧
鄟 𫑘
鄧 邓
+鄩 𬩽
鄭 郑
鄰 邻
鄲 郸
醫 医
醬 酱
醱 酦
+醲 𬪩
醶 𫑷
釀 酿
釁 衅
釩 钒
釲 𫟳
釳 𨰿
+釴 𬬩
釵 钗
釷 钍
釹 钕
釺 钎
釾 䥺
+釿 𬬱
鈀 钯
鈁 钫
鈃 钘
鉆 钻
鉈 铊
鉉 铉
+鉊 𬬿
鉋 铇
鉍 铋
鉑 铂
鉠 𫓭
鉢 钵
鉤 钩
+鉥 𬬸
鉦 钲
+鉧 𬭁
鉬 钼
鉭 钽
+鉮 𬬹
鉳 锫
鉶 铏
鉷 𫟹
鋉 𨱈
鋌 铤
鋏 铗
+鋐 𬭎
鋒 锋
鋗 𫓶
鋙 铻
鋱 铽
鋶 锍
鋸 锯
+鋹 𬬮
鋼 钢
錀 𬬭
錁 锞
錛 锛
錜 𫓻
錝 𫓽
+錞 𬭚
錟 锬
錠 锭
錡 锜
鍥 锲
鍩 锘
鍬 锹
+鍭 𬭤
鍮 𨱎
鍰 锾
鍵 键
鎊 镑
鎌 镰
鎍 𫔅
+鎓 𬭩
鎔 镕
鎖 锁
鎘 镉
鏉 𨱒
鏌 镆
鏍 镙
+鏏 𬭬
鏐 镠
鏑 镝
鏗 铿
鏷 镤
鏹 镪
鏺 䥽
+鏻 𬭸
鏽 锈
鏾 𫔌
鐃 铙
鐦 锎
鐧 锏
鐨 镄
+鐩 𬭼
鐪 𫓺
鐫 镌
鐮 镰
闆 板
闇 暗
闈 闱
+闉 𬮱
闊 阔
闋 阕
闌 阑
隉 陧
隊 队
階 阶
+隑 𬮿
隕 陨
際 际
+隤 𬯎
隨 随
險 险
+隮 𬯀
隯 陦
隱 隐
隴 陇
頑 顽
頒 颁
頓 顿
+頔 𬱖
頗 颇
領 领
頜 颌
+頠 𬱟
頡 颉
頤 颐
頦 颏
馼 𫘜
駁 驳
駃 𫘝
+駉 𬳶
駊 𫘟
駎 𩧨
駐 驻
駑 驽
駒 驹
+駓 𬳵
駔 驵
駕 驾
駘 骀
駤 𫘠
駧 𩧲
駩 𩧴
+駪 𬳽
駫 𫘡
駭 骇
駰 骃
駶 𩧺
駸 骎
駻 𫘣
+駼 𬳿
駿 骏
騁 骋
騂 骍
騍 骒
騎 骑
騏 骐
+騑 𬴂
騔 𩨀
騖 骛
騙 骗
騚 𩨊
騜 𫘩
騝 𩨃
+騞 𬴃
騟 𩨈
騠 𫘨
騤 骙
驋 𩧯
驌 骕
驍 骁
+驎 𬴊
驏 骣
驓 𫘯
驕 骄
魷 鱿
魺 鲄
魽 𫠐
+鮀 𬶍
鮁 鲅
鮃 鲆
鮄 𫚒
鮅 𫚑
鮆 𫚖
+鮈 𬶋
鮊 鲌
鮋 鲉
鮍 鲏
鮝 鲞
鮞 鲕
鮟 𩽾
+鮠 𬶏
+鮡 𬶐
鮣 䲟
鮤 𫚓
鮦 鲖
鯴 鲺
鯶 𩽼
鯷 鳀
+鯻 𬶟
鯽 鲫
鯾 𫚣
鯿 鳊
鰆 䲠
鰈 鲽
鰉 鳇
+鰊 𬶠
鰋 𫚢
鰌 䲡
鰍 鳅
鰲 鳌
鰳 鳓
鰵 鳘
+鰶 𬶭
鰷 鲦
鰹 鲣
鰺 鲹
鰼 鳛
鰽 𫚧
鰾 鳔
+鱀 𬶨
鱂 鳉
鱄 𫚋
鱅 鳙
鱖 鳜
鱗 鳞
鱘 鲟
+鱚 𬶮
鱝 鲼
鱟 鲎
鱠 鲙
鵂 鸺
鵃 鸼
鵊 𫛥
+鵏 𬷕
鵐 鹀
鵑 鹃
鵒 鹆
鶗 𫛸
鶘 鹕
鶚 鹗
+鶠 𬸘
鶡 鹖
鶥 鹛
鶦 𫛷
鶭 𫛯
鶯 莺
鶰 𫛫
+鶱 𬸣
鶲 鹟
鶴 鹤
鶹 鹠
鷗 鸥
鷙 鸷
鷚 鹨
+鷟 𬸦
鷣 𫜃
鷤 𫛴
鷥 鸶
鷨 𪉊
鷩 𫜁
鷫 鹔
+鷭 𬸪
鷯 鹩
鷲 鹫
鷳 鹇
鸋 𫛢
鸌 鹱
鸏 鹲
+鸑 𬸚
鸕 鸬
鸗 𫛟
鸘 鹴
齔 龀
齕 龁
齗 龂
+齘 𬹼
齙 龅
齜 龇
齟 龃
齪 龊
齬 龉
齭 𫜭
+齮 𬺈
齯 𫠜
齰 𫜬
齲 龋
齴 𫜮
齶 腭
齷 龌
+齼 𬺓
齾 𫜰
龍 龙
龎 厐
𡄣 𠵸
𡅏 𠲥
𡅯 𪢖
+𡑍 𫭼
𡑭 𡋗
𡓁 𪤄
𡓾 𡋀
𥖅 𥐯
𥖲 𪿞
𥗇 𪿵
+𥗽 𬒗
𥜐 𫀓
𥜰 𫀌
𥞵 𥞦
乾隆 乾隆
乾隆年間 乾隆年间
乾隆皇帝 乾隆皇帝
+二噁英 二𫫇英
以免藉口 以免借口
以功覆過 以功复过
侔德覆載 侔德复载
申覆 申复
畢昇 毕昇
發覆 发复
-盼既示覆 盼既示复
瞭如 了如
瞭如指掌 了如指掌
瞭望 瞭望
登錄 登入
發佈 釋出
發送 傳送
-皮膚 面板
盤片 碟片
-ç\9b¤ç¬¦ ç¢\9f符
+ç\9b¤ç¬¦ ç£\81ç¢\9fæ©\9f代è\99\9f
目標代碼 目的碼
相冊 相簿
矢量 向量
藍牙 藍芽
虛函數 虛擬函式
虛擬機 虛擬機器
+虛擬機器 虛擬機器
表達式 表示式 運算式
複印 影印
複選按鈕 覈取按鈕
衹 衹 只
著 着 著
沈 沈 沉
+噁 恶 𫫇 「𫫇」爲化學名詞用字,如「二𫫇英」。 可恶 恶心 二𫫇英
+蘋 苹 𬞟 「𬞟」爲一種蕨類植物,生於淺水,四片小葉似「田」字,亦稱「田字草」,音pin2,粵音pan4。蘋果之「苹」音ping2,粵音ping4。
{
"name": "opencc",
- "version": "1.1.3",
+ "version": "1.1.4",
"description": "Conversion between Traditional and Simplified Chinese",
"author": "Carbo Kuo <byvoid@byvoid.com>",
"license": "Apache-2.0",
export PATH=$HOME/miniconda3/bin:$PATH
eval "$(conda shell.bash hook)"
-for VERSION in 2.7 3.5 3.6 3.7 3.8 3.9; do
+for VERSION in 3.7 3.8 3.9 3.10; do
# Create and activate environment
conda create -y -n py$VERSION python=$VERSION
conda activate py$VERSION
export PATH=$HOME/miniconda3/bin:$PATH
eval "$(conda shell.bash hook)"
-for VERSION in 2.7 3.5 3.6 3.7 3.8 3.9; do
+for VERSION in 3.7 3.8 3.9 3.10; do
# Create and activate environment
conda create -y -n py$VERSION python=$VERSION
conda activate py$VERSION
@echo off
setlocal EnableDelayedExpansion
-SET VERSIONS=2.7 3.5 3.6 3.7 3.8 3.9
+SET VERSIONS=3.7 3.8 3.9 3.10
SET SOURCEDIR=%cd%
REM Build packages
'Natural Language :: Chinese (Simplified)',
'Natural Language :: Chinese (Traditional)',
'Programming Language :: Python',
- 'Programming Language :: Python :: 2',
'Programming Language :: Python :: 3',
'License :: OSI Approved :: Apache Software License',
'Topic :: Scientific/Engineering',
}
namespace opencc {
-void ConvertDictionary(const std::string inputFileName,
- const std::string outputFileName,
- const std::string formatFrom,
- const std::string formatTo) {
+void ConvertDictionary(const std::string& inputFileName,
+ const std::string& outputFileName,
+ const std::string& formatFrom,
+ const std::string& formatTo) {
DictPtr dictFrom = LoadDictionary(formatFrom, inputFileName);
SerializableDictPtr dictTo = ConvertDict(formatTo, dictFrom);
dictTo->SerializeToFile(outputFileName);
* Converts a dictionary from a format to another.
* @ingroup opencc_cpp_api
*/
-OPENCC_EXPORT void ConvertDictionary(const std::string inputFileName,
- const std::string outputFileName,
- const std::string formatFrom,
- const std::string formatTo);
+OPENCC_EXPORT void ConvertDictionary(const std::string& inputFileName,
+ const std::string& outputFileName,
+ const std::string& formatFrom,
+ const std::string& formatTo);
} // namespace opencc
DictEntry::UPtrLessThan);
}
-bool Lexicon::IsUnique() {
+bool Lexicon::IsUnique(std::string* dupkey) {
for (size_t i = 1; i < entries.size(); ++i) {
if (entries[i - 1]->Key() == entries[i]->Key()) {
+ if (dupkey) {
+ *dupkey = entries[i]->Key();
+ }
return false;
}
}
bool IsSorted();
// Returns true if every key unique (after sorted).
- bool IsUnique();
+ // When dupkey is set, it is set to the duplicate key.
+ bool IsUnique(std::string* dupkey = nullptr);
const DictEntry* At(size_t index) const { return entries.at(index).get(); }
static DictEntry* ParseKeyValues(const char* buff, size_t lineNum) {
size_t length;
+ if (buff == nullptr || UTF8Util::IsLineEndingOrFileEnding(*buff)) {
+ return nullptr;
+ }
const char* pbuff = UTF8Util::FindNextInline(buff, '\t');
if (UTF8Util::IsLineEndingOrFileEnding(*pbuff)) {
throw InvalidTextDictionary("Tabular not found " + std::string(buff),
UTF8Util::SkipUtf8Bom(fp);
size_t lineNum = 1;
while (fgets(buff, ENTRY_BUFF_SIZE, fp)) {
- lexicon->Add(ParseKeyValues(buff, lineNum));
+ DictEntry* entry = ParseKeyValues(buff, lineNum);
+ if (entry != nullptr) {
+ lexicon->Add(entry);
+ }
lineNum++;
}
return lexicon;
TextDictPtr TextDict::NewFromFile(FILE* fp) {
const LexiconPtr& lexicon = ParseLexiconFromFile(fp);
lexicon->Sort();
- if (!lexicon->IsUnique()) {
- throw InvalidFormat("The text dictionary contains duplicated keys.");
+ std::string dupkey;
+ if (!lexicon->IsUnique(&dupkey)) {
+ throw InvalidFormat(
+ "The text dictionary contains duplicated keys: " + dupkey + ".");
}
return TextDictPtr(new TextDict(lexicon));
}
TestDict(deserialized);
}
+TEST_F(TextDictTest, DeserializationEmptyLine) {
+ FILE* fp = fopen(fileName.c_str(), "w");
+ fprintf(fp, "A\tB\n\n\nC\tD E\n\n");
+ fclose(fp);
+ const TextDictPtr& dict = SerializableDict::NewFromFile<TextDict>(fileName);
+ EXPECT_EQ(dict->GetLexicon()->Length(), 2);
+
+ Optional<const DictEntry*> entry = dict->opencc::Dict::Match("A");
+ EXPECT_TRUE(!entry.IsNull());
+ EXPECT_EQ(utf8("A"), entry.Get()->Key());
+}
+
TEST_F(TextDictTest, ExactMatch) {
auto there = textDict->Match("積羽沉舟", 12);
EXPECT_FALSE(there.IsNull());
}
/**
- * Copies a substd::string with given length to a new std::string.
+ * Copies a substring with given length to a new string.
*/
static std::string FromSubstr(const char* str, size_t length) {
std::string newStr;
曾經有一份真誠的愛情放在我面前,我沒有珍惜,等我失去的時候我才後悔莫及。人事間最痛苦的事莫過於此。如果上天能夠給我一個再來一次得機會,我會對那個女孩子說三個字,我愛你。如果非要在這份愛上加個期限,我希望是,一萬年。
新的理論被發現了。
金胄不是金色的甲冑。
-經理發現後勸諭兩人
\ No newline at end of file
+經理發現後勸諭兩人
+想到自己一緊張就口吃,我就沒胃口喫飯
\ No newline at end of file
曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及。人事间最痛苦的事莫过于此。如果上天能够给我一个再来一次得机会,我会对那个女孩子说三个字,我爱你。如果非要在这份爱上加个期限,我希望是,一万年。
新的理论被发现了。
金胄不是金色的甲胄。
-经理发现后劝谕两人
\ No newline at end of file
+经理发现后劝谕两人
+想到自己一紧张就口吃,我就没胃口吃饭
\ No newline at end of file
-曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及。人事间最痛苦的事莫过于此。如果上天能够给我一个再来一次得机会,我会对那个女孩子说三个字,我爱你。如果非要在这份爱上加个期限,我希望是,一万年。
\ No newline at end of file
+曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及。人事间最痛苦的事莫过于此。如果上天能够给我一个再来一次得机会,我会对那个女孩子说三个字,我爱你。如果非要在这份爱上加个期限,我希望是,一万年。
+二𫫇英
\ No newline at end of file
-曾經有一份真誠的愛情放在我面前,我沒有珍惜,等我失去的時候我才後悔莫及。人事間最痛苦的事莫過於此。如果上天能夠給我一個再來一次得機會,我會對那個女孩子說三個字,我愛你。如果非要在這份愛上加個期限,我希望是,一萬年。
\ No newline at end of file
+曾經有一份真誠的愛情放在我面前,我沒有珍惜,等我失去的時候我才後悔莫及。人事間最痛苦的事莫過於此。如果上天能夠給我一個再來一次得機會,我會對那個女孩子說三個字,我愛你。如果非要在這份愛上加個期限,我希望是,一萬年。
+二噁英
\ No newline at end of file